package org.sam.swing;

import java.awt.Font;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;

import javax.swing.JButton;

import org.sam.swing.JSFontChooserDialog.FontChooserLisenter;

/**
 * 颜色选择button控件
 * 
 * @author sam
 *
 */
public class JSFontButton extends JButton implements ActionListener , FontChooserLisenter{

	private static final long serialVersionUID = 3068266978248390063L;
	
	/**
	 * colorchoose对象
	 */
	protected JSFontChooserDialog fontChooser;

	/**
	 * 当期操作的颜色
	 * 
	 * @return
	 */
	public Font getFont() {
		
		if(fontChooser == null)
			return super.getFont();
		
		return fontChooser.getFont();
	}

	/**
	 * 当前的操作的颜色
	 * 
	 * @param color
	 */
	public void setFont(Font font) {
		super.setFont(font);
		if(fontChooser != null){
			fontChooser.setFont(font);
			this.setText(fontChooser.getFontDecode());
		}
	}

	/**
	 * 使用默认配置的颜色选择按钮
	 */
	public JSFontButton() {
		super();
		fontChooser = new JSFontChooserDialog();
		this.addActionListener(this);
		fontChooser.addFontChooserLisenter(this);
		this.setText(fontChooser.getFontDecode());
	}

	/**
	 * 带字体的构造参数
	 * @param font 
	 */
	public JSFontButton(Font font){
		super();
		fontChooser = new JSFontChooserDialog();
		this.addActionListener(this);
		fontChooser.setFont(font);
		fontChooser.addFontChooserLisenter(this);
		this.setText(fontChooser.getFontDecode());
	}
	
	/**
	 * 颜色设置
	 * @param fontDecode 重新编码的font字体: 宋体-PLAIN-10
	 */
	public JSFontButton(String fontDecode){
		this(Font.decode(fontDecode));
	}

	/**
	 * 按钮点击事件
	 * @param e
	 */
	@Override
	public void actionPerformed(ActionEvent e) {
		this.fontChooser.setVisible(true);
	}

	/**
	 * 选中之后的操作
	 * @param font
	 * @param fontDecode
	 */
	@Override
	public void afterChoose(Font font, String fontDecode) {
		this.setText(fontDecode);
	}

}
